package org.example.onlinejudge.repository;

import org.example.onlinejudge.model.Role;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.Optional;

/**
 * 角色数据访问接口
 * 负责提供角色数据的CRUD操作和自定义查询
 * 实现逻辑：
 * 1. 继承JpaRepository，提供基本的CRUD操作
 * 2. 提供根据角色代码查找角色的方法
 * 3. 提供根据角色名称查找角色的方法
 * 4. 提供检查角色代码是否存在的方法
 * 5. 利用Spring Data JPA的命名约定自动生成查询实现
 */
@Repository
public interface RoleRepository extends JpaRepository<Role, Long> {

    /**
     * 根据角色代码查找角色
     */
    Optional<Role> findByRoleCode(String roleCode);

    /**
     * 根据角色名称查找角色
     */
    Optional<Role> findByRoleName(String roleName);

    /**
     * 检查角色代码是否存在
     */
    boolean existsByRoleCode(String roleCode);
}


